// pages/login/login.js
// 导入验证码库
const MCAP = require('../../utils/mcaptcha')
// 导入表单校验库
import WxValidate from "../../utils/WxValidate"
// 引用接口API
const apis = require('../../utils/httpAPI')
let app = getApp()
Page({
  /**
   * 页面的初始数据
   */
  data: {
    codeStr: '获取失败'
  },
  /**
   * 登录
   */
  login(e){
    const that = this
    const params = e.detail.value
    // 校验表单
    if(!that.validate.checkForm(params)){
      const error = that.validate.errorList[0]
      wx.showModal({
        title: '温馨提示',
        content: error.msg,
        showCancel: false
      })
      return false
    }
    
    // 请求
    wx.request({
      url: apis.login,
      method: 'POST',
      data: {
        username: e.detail.value.username,  // 账号
        password:e.detail.value.password,  // 密码
        code:e.detail.value.code  // 验证码
      },
      success(res){
        // 登录失败的
        if(res.data.status === 1){
          wx.showModal({
            title: '温馨提示',
            content: res.data.message,
            showCancel: false,
            success(){
              // 重定向
              wx.redirectTo({
                url: '../login/login',
              })
            }
          })
        } else if(res.data.status === -1){  // 验证码错误
          wx.showModal({
            title: '温馨提示',
            content: res.data.message,
            showCancel: false,
            // 更新验证码
            success(){
              that.initDraw()
            }
          })
        } else {  // 登录成功
          wx.showToast({
            title: res.data.message,
            icon: 'success',
            duration: 2000,
            mask: true,
            // 存储token,跳转页面
            success(){
              wx.setStorageSync('token', res.data.token)
              // 缓存当前用户信息
              wx.setStorageSync('user', JSON.stringify(res.data.result))
              // 获取到自己的所有信息
              wx.request({
                url: apis.userinfo,
                header: {
                  authorization: res.data.token
                },
                data: {
                  id:res.data.result.id
                },
                success(res) {
                  if(res.data.status == 0) {
                    // 将自己的信息赋值给全局的 selfInfo
                    app.globalData.selfInfo = res.data.data
                  }
                }
              })
              setTimeout(()=>{
                // 普通用户端
                if(res.data.result.role_id === 3) {
                  wx.switchTab({
                    url: '../patient/home/home',
                  })
                } else if (res.data.result.role_id === 2) { // 医生端
                  wx.switchTab({
                    url: '../doctor/home/home',
                  })
                } 
              },2000)
            }
          })
        }
      }
    })
  },
  /**
   * 初始化验证码
   */
  initDraw(){
    this.getCode()
  },
  /**
   * 从服务器获取验证码
   */
  getCode(){
    let that = this
    wx.request({
      url: apis.code,
      method: 'GET',
      success(res){
        let code = ''
        if(res.data.statusCode === 500){
          code = that.data.codeStr
        } else {
          code = res.data.result
        }
        // 存放后端返回的验证码
        that.setData({
          codeStr: code
        })
        // 生成验证码图片
        new MCAP({
          el: 'canvas',
          width: 80,
          height: 30,
          code
        })
      },
      fail(err){
        // 微信消息提示框
        wx.showModal({
          title: '温馨提示',
          content: '验证码获取失败！',
          showCancel: false
        })
      }
    })
  },
  /**
   * 更新验证码
   */
  changeCode(){
    this.initDraw()
  },
  /**
   * 生命周期函数--监听页面加载
   */
  onLoad(options) {
    this.initDraw()
    // 设置表单校验规则
    this.validate = new WxValidate({
     
      // 校验密码
      password:{
        require: true,
        minlength: 6
      },
      // 验证码校验
      code:{
        required: true,
        minlength: 4
      }
    })
  }
})